package com.deschen.security.core.social.qq.connect;

import com.deschen.security.core.social.qq.api.QQ;
import com.deschen.security.core.social.qq.api.QQUserInfo;
import org.springframework.social.connect.ApiAdapter;
import org.springframework.social.connect.ConnectionValues;
import org.springframework.social.connect.UserProfile;

/**
 * @Author deschen
 * @Create 2019/9/2
 * @Description spring social中Api(QQImpl的父类，QQ获取用户信息)与connect（OAuth2Connect OAuth2用户标准信息）适配器
 * @Since 1.0.0
 */
public class QQAdapter implements ApiAdapter<QQ> {
    /**
     * 测试QQ服务器是否有效,可以调用Api
     * @param api
     * @return
     */
    @Override
    public boolean test(QQ api) {
        return true;
    }

    /**
     * 把api赋值到values
     *
     * @param api    qq用户信息
     * @param values connect数据结构
     */
    @Override
    public void setConnectionValues(QQ api, ConnectionValues values) {
        QQUserInfo qqUserInfo = api.getQQUserInfo();
        // 昵称
        values.setDisplayName(qqUserInfo.getNickname());
        // 图片
        values.setImageUrl(qqUserInfo.getFigureurl_1());
        // 个人博客链接, QQ没有
        values.setProfileUrl(null);
        // OpenID是此网站上或应用中唯一对应用户身份的标识
        values.setProviderUserId(qqUserInfo.getOpenId());
    }

    /**
     * 用api获取标准用户信息
     *
     * @param api
     * @return
     */
    @Override
    public UserProfile fetchUserProfile(QQ api) {
        return null;
    }

    /**
     * 更新个人主页（QQ无，例如微博）
     *
     * @param api
     * @param message
     */
    @Override
    public void updateStatus(QQ api, String message) {

    }
}
